
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>讲下Reactor线程模型？ - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>讲下Reactor线程模型？ - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">Reactor 线程模型的核心思想是什么？它由哪两个关键部分组成？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">Reactor 模式是一种事件驱动的设计模式，其核心思想是将事件的发生与事件的处理分离开来。它主要由两个关键部分组成：1. Reactor，负责监控和分发 I/O 事件；2. Handlers（事件处理器），负责处理具体的 I/O 事件。</div>
          </div>
          <div class="card-source">来源: 1. Reactor 线程模型的核心概念</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">简述 Reactor 线程模型完整的工作流程包含哪四个步骤？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">工作流程包含四个步骤：1. 事件注册：将事件处理器（Handlers）与特定 I/O 事件关联起来。2. 事件轮询：Reactor 线程使用 I/O 多路复用技术（如 epoll）轮询事件状态。3. 事件分发：当事件发生时，Reactor 将其分发给相应的处理线程。4. 事件处理：事件处理线程执行具体的 I/O 操作。</div>
          </div>
          <div class="card-source">来源: 2. Reactor 线程模型的工作流程</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">模式</div>
          <div class="card-question">多 Reactor 多线程模型适用于什么样的应用场景？它的结构是怎样的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">模式</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">该模型适用于负载较重的应用，旨在多核处理器上实现更高的并发处理能力。其结构是使用多个 Reactor 线程，每个 Reactor 线程负责处理一部分 I/O 事件的轮询和分发，并且每个 Reactor 线程下还配有多个工作线程来处理具体业务。</div>
          </div>
          <div class="card-source">来源: 3. Reactor 线程模型的变种</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">为什么说 Reactor 线程模型能够实现“高效的资源利用”？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">因为它通过非阻塞 I/O 和事件驱动的方式，避免了传统阻塞 I/O 模型中因线程阻塞和频繁上下文切换所带来的开销，从而能够高效地利用系统资源。</div>
          </div>
          <div class="card-source">来源: 4. Reactor 线程模型的优点</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">在 Reactor 模型的工作流程中，“事件轮询”阶段通常会使用哪些高效的 I/O 多路复用技术？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">在事件轮询阶段，通常会使用高效的 I/O 多路复用技术来检测事件，例如 `select`、`poll`、`epoll`。</div>
          </div>
          <div class="card-source">来源: 2. Reactor 线程模型的工作流程</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">模式</div>
          <div class="card-question">单 Reactor 多线程模型与单 Reactor 单线程模型的主要区别是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">模式</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">主要区别在于事件处理的方式。在单 Reactor 单线程模型中，一个 Reactor 线程处理所有 I/O 事件和事件分发；而在单 Reactor 多线程模型中，一个 Reactor 线程负责事件的轮询和分发，但具体的 I/O 事件处理由多个工作线程完成，从而提高吞吐量。</div>
          </div>
          <div class="card-source">来源: 3. Reactor 线程模型的变种</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">在 Reactor 模式中，Handlers（事件处理器）的具体职责是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">Handlers 是事件处理器，负责处理具体的 I/O 事件。根据事件类型的不同，Handlers 可能需要执行读取数据、写入数据或处理连接状态等操作。</div>
          </div>
          <div class="card-source">来源: 1. Reactor 线程模型的核心概念</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">Reactor 模式是如何实现高并发处理能力的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">Reactor 模式通过其事件循环和异步处理机制，能够支持大量的并发连接，从而可以处理大规模的并发 I/O 操作。</div>
          </div>
          <div class="card-source">来源: 4. Reactor 线程模型的优点</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">除了 Netty 之外，文档还提到了哪些技术或框架也应用了 Reactor 模式？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">文档中提到，Java NIO 的 `Selector` 机制是 Reactor 模式的一种实现。此外，许多现代高性能网络框架如 Akka 和 Vert.x 也采用类似的 Reactor 模式。</div>
          </div>
          <div class="card-source">来源: 5. Reactor 线程模型的应用</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
